package com.canaan.business.service.basic;

import com.canaan.business.domain.basic.WmsProduct;
import com.canaan.business.domain.vo.ProductStockVo;


import java.util.List;


/**
 * 物料主数据Service接口
 *
 * @author ruoyi
 * @date 2022-11-30
 */
public interface IWmsProductService
{
    /**
     * 查询物料主数据
     *
     * @param id 物料主数据主键
     * @return 物料主数据
     */
    public WmsProduct selectWmsProductById(Long id);

    /**
     * 根据物料编号查询物料
     *
     * @param productNo 物料编号
     * @return 物料主数据
     */
    public WmsProduct selectWmsProductByProductNo(String productNo);

    public List<WmsProduct> selectWmsProductsByProductNos(List<String> productNos);

    /**
     * 根据物料名称查询物料
     *
     * @param productName 物料名称
     * @return 物料主数据
     */
    public WmsProduct selectWmsProductByProductName(String productName);
    /**
     * 查询物料主数据列表
     *
     * @param wmsProduct 物料主数据
     * @return 物料主数据集合
     */
    public List<WmsProduct> selectWmsProductList(WmsProduct wmsProduct);

    /**
     * 新增物料主数据
     *
     * @param wmsProduct 物料主数据
     * @return 结果
     */
    public int insertWmsProduct(WmsProduct wmsProduct);

    /**
     * 修改物料主数据
     *
     * @param wmsProduct 物料主数据
     * @return 结果
     */
    public int updateWmsProduct(WmsProduct wmsProduct);

    /**
     * 批量删除物料主数据
     *
     * @param ids 需要删除的物料主数据主键集合
     * @return 结果
     */
    public int deleteWmsProductByIds(Long[] ids);

    /**
     * 删除物料主数据信息
     *
     * @param id 物料主数据主键
     * @return 结果
     */
    public int deleteWmsProductById(Long id);


    /**
     * 导入物料
     *
     * @param productList 物料数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importProduct(List<WmsProduct> productList, Boolean isUpdateSupport, String operName);

    List<WmsProduct> listByStorehouseNo(ProductStockVo wmsProduct);
}
